package com.itjh.service.impl;

import com.itjh.service.FileService;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * Description:
 * 使用本地存储的方式完成文件上传
 *
 * @Create 2025/1/18 12:00
 */

@Service
public class FileServiceImpl implements FileService {
    @Override
    public String saveFile(MultipartFile file) {
        /*
            准备使用本地存储的方式完成对文件的保存
            1: 获取真实的文件名;(获取文件的后缀)
            2: 为了避免文件重名覆盖,需要随机生成一个不重复的文件名,配合上一步的后缀作为即将保存的文件名使用
            3: 真正的保存
         */
        //获取原始文件名
        String originalFilename = file.getOriginalFilename();
        // 1: 先找到文件名中的最后一个点的索引位置,然后再截取即可 或 直接通过点分割,获取数组的最后一个元素
//        int i = originalFilename.lastIndexOf(".");
//        int index = i >= 0 ? i : 0;
//        String expandName = originalFilename.substring(index);
        String[] arr = originalFilename.split("\\.");
        String expandName = arr[arr.length - 1];

        //2: 为了避免文件重名覆盖,需要随机生成一个不重复的文件名
        String newFileName = UUID.randomUUID().toString() + "." + expandName; //随机名 + 文件扩展名

        //3. 将文件存储在服务器的磁盘目录上
        File newFile = new File("D:/MyFileTest/images/" + newFileName);
        try {
            file.transferTo(newFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //返回文件的绝对路径
        return newFile.getAbsolutePath();
    }
}
